<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 递归用来解决重复执行的问题

    // 递归的标志性特点：自己调用自己
    // 计算阶乘
    // 5! = 5*4*3*2*1

    // 5!
    // 5 * 4!
    //     4 * 3!
    //         3 * 2!
    //             2 * 1!
    //                 1

    // 假设有个功能fn，专门用来计算递归

    // fn(5)
    // 5 * fn(4)
    //     4 * fn(3)
    //         3 * fn(2)
    //             2 * fn(1)
    //                 1

    // fn(n) = n * fn(n-1)

    // fn(1) = 1;

    // 实现fn的功能

    // function fn(n){
    //     if(n === 1){
    //         return 1;
    //     }else{
    //         return n * fn(n-1);
    //     }
    // }
    // console.log(fn(1));



    // =================



    // 兔子问题
    // 1,1,2,3,5,8,13,21...
    // fn(n) = fn(n-1) + fn(n-2)
    // fn(1) = 1;
    // fn(2) = 1;

    // function fn(n){
    //     if(n === 1 || n === 2){
    //         return 1;
    //     }
    //     return fn(n-1) + fn(n-2);
    // }
    // console.log(fn(9));


    
</script>
</html>